{% include 'java.header.j2' %}

package {{ table.mark.package }}.{{ table.mark.business_name }};

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Map;

public interface {{ table.derived.naming.service_name }} {
    void insert({{ table.derived.naming.class_name }} entity);
    void deleteById({{ table.derived.java.primary_key_java_type }} id);
    void deleteByMap(Map<String, Object> columnMap);
    void deleteBatchIds(List<{{ table.derived.java.primary_key_java_type }}> ids);
    void updateById({{ table.derived.naming.class_name }} entity);
    void update({{ table.derived.naming.class_name }} entity, QueryWrapper<{{ table.derived.naming.class_name }}> updateWrapper);
    {{ table.derived.naming.class_name }} selectById({{ table.derived.java.primary_key_java_type }} id);
    List<{{ table.derived.naming.class_name }}> selectBatchIds(List<{{ table.derived.java.primary_key_java_type }}> ids);
    List<{{ table.derived.naming.class_name }}> selectByMap(Map<String, Object> columnMap);
    {{ table.derived.naming.class_name }} selectOne(QueryWrapper<{{ table.derived.naming.class_name }}> queryWrapper);
    Long selectCount(QueryWrapper<{{ table.derived.naming.class_name }}> queryWrapper);
    List<{{ table.derived.naming.class_name }}> selectList(QueryWrapper<{{ table.derived.naming.class_name }}> queryWrapper);
    List<Map<String, Object>> selectMaps(QueryWrapper<{{ table.derived.naming.class_name }}> queryWrapper);
    List<Object> selectObjs(QueryWrapper<{{ table.derived.naming.class_name }}> queryWrapper);
    IPage<{{ table.derived.naming.class_name }}> selectPage(Page<{{ table.derived.naming.class_name }}> page, QueryWrapper<{{ table.derived.naming.class_name }}> queryWrapper);
    IPage<Map<String, Object>> selectMapsPage(Page<Map<String, Object>> page, QueryWrapper<{{ table.derived.naming.class_name }}> queryWrapper);
}